package excmy

import (
	"fmt"
	"strconv"
	"strings"
)

// AssertionInt 将字符串转换为int，如果转换失败则抛出panic
func AssertionInt(s string) int {
	i, err := strconv.Atoi(s)
	if err != nil {
		panic(fmt.Sprintf("AssertionInt: 无法将 %q 转换为 int: %v", s, err))
	}
	return i
}

// AssertionFloat64 将字符串转换为float64，如果转换失败则抛出panic
func AssertionFloat64(s string) float64 {
	// 检查字符串是否以%结尾
	if strings.HasSuffix(s, "%") {
		// 移除%并尝试将剩余部分转换为float64
		s = strings.TrimSuffix(s, "%")
		f, err := strconv.ParseFloat(s, 64)
		if err != nil {
			panic(fmt.Sprintf("无法将百分比 %q 转换为 float64: %v", s+"%", err))
		}
		// 将得到的值除以100以转换为小数
		return f / 100
	}
	// 如果字符串不以%结尾，则直接转换为float64
	f, err := strconv.ParseFloat(s, 64)
	if err != nil {
		panic(fmt.Sprintf("无法将 %q 转换为 float64: %v", s, err))
	}
	return f
}
